Document Type Definition

AI
qwen-3-235b-a22b-instruct-2507
작성자
익명
작성일
2025.12.29
조회수
8
버전
v1

Document Type Definition

개요

Document Type Definition(이하 DTD)는 XML(Extensible Markup Language) 또는 SGML(Standard Generalized Markup Language) 문서의 구조와 유효성을 정의하기 위한 문법적 규칙의 집합입니다. DTD는 문서에 사용될 수 있는 요소(element), 속성(attribute), 엔티티(entity), 그리고 이들 간의 계층 구조와 관계를 명시함으로써, 문서가 특정 형식에 맞게 작성되었는지 검증하는 데 사용됩니다. DTD는 웹 개발, 데이터 교환, 문서 관리 시스템 등에서 문서의 일관성과 호환성을 보장하는 중요한 역할을 합니다.

DTD는 XML의 초기 표준으로 널리 사용되었으며, 특히 HTML 4.01과 같은 마크업 언어의 공식 사양에 포함되어 있었습니다. 그러나 현재는 XML Schema(XSD)와 같은 더 강력하고 유연한 대안이 등장하면서 점차 사용 빈도가 줄어들고 있습니다. 그럼에도 불구하고 레거시 시스템이나 특정 산업 표준(예: DocBook, TEI)에서는 여전히 DTD가 활발히 사용되고 있습니다.


DTD의 주요 구성 요소

DTD는 다음과 같은 핵심 구성 요소로 문서의 구조를 정의합니다.

1. 요소 선언 (Element Declaration)

요소 선언은 XML 문서 내에서 사용 가능한 태그와 그 내용 모델(content model)을 정의합니다. 문법은 <!ELEMENT 요소이름 내용모델> 형태로 표현됩니다.

예:

<!ELEMENT book (title, author+, chapter+)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT chapter (title, section*)>

  • #PCDATA: 문자 데이터만 포함 가능함을 의미 (Parsed Character Data).
  • +: 하나 이상의 반복.
  • *: 0개 이상의 반복.
  • ,: 순서가 있는 자식 요소.
  • |: 선택적 자식 요소 (예: (title | subtitle)).

2. 속성 선언 (Attribute Declaration)

속성은 요소에 추가 정보를 제공하는 데 사용됩니다. <![ATTLIST](/doc/%EA%B8%B0%EC%88%A0/XML/%EC%86%8D%EC%84%B1%20%EC%84%A0%EC%96%B8/ATTLIST)> 지시어를 통해 정의됩니다.

예:

<!ATTLIST book
    id ID #REQUIRED
    lang CDATA "ko"
    edition (1|2|3) "1">

  • [ID](/doc/%EA%B8%B0%EC%88%A0/XML/%EC%86%8D%EC%84%B1%20%EC%9C%A0%ED%98%95/ID): 고유 식별자로, 문서 내에서 중복 불가.
  • [CDATA](/doc/%EA%B8%B0%EC%88%A0/XML/%EC%86%8D%EC%84%B1%20%EC%9C%A0%ED%98%95/CDATA): 일반 문자열 데이터.
  • #REQUIRED: 속성 필수.
  • #IMPLIED: 속성 선택 가능.
  • "ko": 기본값 설정.

3. 엔티티 선언 (Entity Declaration)

엔티티는 반복 사용되는 텍스트나 외부 리소스를 대체할 수 있는 이름입니다. 내부 엔티티와 외부 엔티티로 나뉩니다.

예:

<!ENTITY copyright "© 2025 MyCompany">
<!ENTITY logo SYSTEM "logo.svg">

  • &copyright;과 같이 XML 문서 내에서 참조 가능.

4. 외부 DTD 및 포함

DTD는 인라인으로 문서 내에 포함되거나, 외부 파일로 분리하여 참조할 수 있습니다.

예 (외부 참조):

<!DOCTYPE book SYSTEM "book.dtd">

또는 공개 식별자가 있는 경우:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
    "http://www.w3.org/TR/html4/strict.dtd">


DTD의 장단점

장점

  • 단순성: 문법이 비교적 간단하여 학습과 작성에 용이합니다.
  • 광범위한 지원: 오래된 XML 파서 대부분이 DTD를 지원합니다.
  • 문서 유효성 검사: 문서 구조와 내용의 일관성을 보장합니다.
  • 엔티티 기반 재사용: 반복되는 내용을 효율적으로 관리할 수 있습니다.

단점

  • 데이터 타입 제한: 문자열 외의 데이터 타입(예: 정수, 날짜)을 정의할 수 없음.
  • 네임스페이스 미지원: XML 네임스페이스와 호환되지 않음.
  • 유연성 부족: 복잡한 제약 조건이나 조건부 구조를 표현하기 어려움.
  • 유지보수 어려움: 대규모 문서에서는 DTD 관리가 복잡해질 수 있음.

DTD vs XML Schema

항목 DTD XML Schema (XSD)
언어 고유한 문법 (SGML 기반) XML 기반
데이터 타입 제한적 (주로 문자열) 풍부한 데이터 타입 지원
네임스페이스 미지원 완전 지원
확장성 낮음 높음
가독성 낮음 (특수 기호 사용) 높음 (XML 형식)
사용 빈도 감소 중 현대 XML 표준

활용 사례

  • HTML 4.01 / XHTML 1.0: 공식 DTD를 통해 문서 유형(Strict, Transitional, Frameset)을 정의.
  • DocBook: 기술 문서 작성용 XML 기반 형식으로 DTD 기반.
  • TEI(Text Encoding Initiative): 인문학 텍스트 인코딩 표준.
  • 레거시 시스템: 기존 시스템과의 호환성을 위해 DTD를 계속 사용.

참고 자료

Note: 현대 애플리케이션 개발에서는 DTD보다는 XML Schema나 RELAX NG를 권장합니다. 그러나 기존 시스템 유지보수나 특정 산업 표준을 다룰 때는 DTD의 이해가 필수적입니다.

AI 생성 콘텐츠 안내

이 문서는 AI 모델(qwen-3-235b-a22b-instruct-2507)에 의해 생성된 콘텐츠입니다.

주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.

이 AI 생성 콘텐츠가 도움이 되었나요?